home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / ExtraLib / include / rhosigma / extra_lib.i < prev    next >
Encoding:
Text File  |  2001-05-01  |  7.9 KB  |  248 lines

  1. ; ___________________________________________________________________________
  2. ; |*************************************************************************|
  3. ; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
  4. ; |*| Set TAB to 15 for best readable file layout. |*| HiSoft DevPac 3.04 |*|
  5. ; |*|______________________________________________|*|____________________|*|
  6. ; |*************************************************************************|
  7. ; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
  8. ; |*|               |*|  $Id: extra_lib.i (28.04.01)                      |*|
  9. ; |*| ###### ###### |*|  RhoSigma Source based on NDK 3.1 Includes 40.15  |*|
  10. ; |*| ##  ## ##   # |*| _________________________________________________ |*|
  11. ; |*| ##  ##  ##    |*|                                                   |*|
  12. ; |*| ######   ##   |*|  The vector offsets of extra.libary's functions   |*|
  13. ; |*| ##      ##    |*|                                                   |*|
  14. ; |*| ##     ##   # |*| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |*|
  15. ; |*| ##     ###### |*|  Copyright © 1998-2001 RhoSigma, Roland Heyder    |*|
  16. ; |*|               |*|  All Rights Reserved.                             |*|
  17. ; |*|_______________|*|___________________________________________________|*|
  18. ; |*************************************************************************|
  19. ; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  20.  
  21.     IFND    EXTRA_LIB_I
  22. EXTRA_LIB_I    SET    1
  23.  
  24. ** start bias (-30) **
  25. ** private (-30) **
  26. ** private (-36) **
  27. _LVO_EXTRA_BAMCheckSum        = -42
  28. _LVO_EXTRA_BootBlockSum        = -48
  29. _LVO_EXTRA_DiskBlockSum        = -54
  30. _LVO_EXTRA_OpenBuf        = -60
  31. _LVO_EXTRA_CloseBuf        = -66
  32. _LVO_EXTRA_FileToBuf        = -72
  33. _LVO_EXTRA_BufToFile        = -78
  34. _LVO_EXTRA_ClearBuf        = -84
  35. _LVO_EXTRA_DuplicateBuf        = -90
  36. _LVO_EXTRA_BufInfo        = -96
  37. _LVO_EXTRA_SeekBuf        = -102
  38. _LVO_EXTRA_Store        = -108
  39. _LVO_EXTRA_InsertBuf        = -114
  40. _LVO_EXTRA_InsertFile        = -120
  41. _LVO_EXTRA_Replace        = -126
  42. _LVO_EXTRA_Get            = -132
  43. _LVO_EXTRA_Clear        = -138
  44. _LVO_EXTRA_FindData        = -144
  45. _LVO_EXTRA_FindNext        = -150
  46. _LVO_EXTRA_FindPrev        = -156
  47. _LVO_EXTRA_FreeFinds        = -162
  48. _LVO_EXTRA_SetBookmark        = -168
  49. _LVO_EXTRA_GotoBookmark        = -174
  50. _LVO_EXTRA_FindString        = -180
  51. _LVO_EXTRA_GetLength        = -186
  52. _LVO_EXTRA_LastError        = -192
  53. _LVO_EXTRA_LongToString        = -198
  54. _LVO_EXTRA_StringToLong        = -204
  55. _LVO_EXTRA_PackByteRun1        = -210
  56. _LVO_EXTRA_UnpackByteRun1        = -216
  57. _LVO_EXTRA_PrintIoError        = -222
  58. _LVO_EXTRA_FlipCase        = -228
  59. _LVO_EXTRA_CmpMem        = -234
  60. _LVO_EXTRA_CopyMemI        = -240
  61. _LVO_EXTRA_FillMem        = -246
  62. _LVO_EXTRA_GetMem        = -252
  63. _LVO_EXTRA_UnGetMem        = -258
  64. _LVO_EXTRA_OutlineOff        = -264
  65. _LVO_EXTRA_OutlineOn        = -270
  66. _LVO_EXTRA_SetOPen        = -276
  67. _LVO_EXTRA_SpecText        = -282
  68. _LVO_EXTRA_SpecTextPrefs        = -288
  69. _LVO_EXTRA_ShowMsg        = -294
  70. _LVO_EXTRA_v2_OpenBuf        = -300
  71. _LVO_EXTRA_v2_FileToBuf        = -306
  72. _LVO_EXTRA_v2_DuplicateBuf        = -312
  73.  
  74.     IFEQ    __LK-3
  75. ;----------------------------------------------------------------------------
  76. ; Die alten Symbole nach NDK-Norm werden nur noch verwendet, wenn linkbarer
  77. ; Code erzeugt wird. Außerdem werden diese Symbole auch gleich exportiert.
  78. ; Dies geschieht alles in weiser Voraussicht auf die eventuelle Einbindung
  79. ; der amiga.lib o.ä., welche natürlich nur die alten NDK-Symbole kennt.
  80. ; Würde dies nicht gemacht, dann wird der Linker sich über viele undefinierte
  81. ; Symbole beschweren...
  82. ;----------------------------------------------------------------------------
  83. ** start bias (-30) **
  84. ** private (-30) **
  85. ** private (-36) **
  86. _LVOBAMCheckSum        = -42
  87. _LVOBootBlockSum        = -48
  88. _LVODiskBlockSum        = -54
  89. _LVOOpenBuf            = -60
  90. _LVOCloseBuf            = -66
  91. _LVOFileToBuf            = -72
  92. _LVOBufToFile            = -78
  93. _LVOClearBuf            = -84
  94. _LVODuplicateBuf        = -90
  95. _LVOBufInfo            = -96
  96. _LVOSeekBuf            = -102
  97. _LVOStore            = -108
  98. _LVOInsertBuf            = -114
  99. _LVOInsertFile            = -120
  100. _LVOReplace            = -126
  101. _LVOGet            = -132
  102. _LVOClear            = -138
  103. _LVOFindData            = -144
  104. _LVOFindNext            = -150
  105. _LVOFindPrev            = -156
  106. _LVOFreeFinds            = -162
  107. _LVOSetBookmark        = -168
  108. _LVOGotoBookmark        = -174
  109. _LVOFindString            = -180
  110. _LVOGetLength            = -186
  111. _LVOLastError            = -192
  112. _LVOLongToString        = -198
  113. _LVOStringToLong        = -204
  114. _LVOPackByteRun1        = -210
  115. _LVOUnpackByteRun1        = -216
  116. _LVOPrintIoError        = -222
  117. _LVOFlipCase            = -228
  118. _LVOCmpMem            = -234
  119. _LVOCopyMemI            = -240
  120. _LVOFillMem            = -246
  121. _LVOGetMem            = -252
  122. _LVOUnGetMem            = -258
  123. _LVOOutlineOff            = -264
  124. _LVOOutlineOn            = -270
  125. _LVOSetOPen            = -276
  126. _LVOSpecText            = -282
  127. _LVOSpecTextPrefs        = -288
  128. _LVOShowMsg            = -294
  129. _LVOv2_OpenBuf            = -300
  130. _LVOv2_FileToBuf        = -306
  131. _LVOv2_DuplicateBuf        = -312
  132.  
  133.     XDEF    _LVOBAMCheckSum
  134.     XDEF    _LVOBootBlockSum
  135.     XDEF    _LVODiskBlockSum
  136.     XDEF    _LVOOpenBuf
  137.     XDEF    _LVOCloseBuf
  138.     XDEF    _LVOFileToBuf
  139.     XDEF    _LVOBufToFile
  140.     XDEF    _LVOClearBuf
  141.     XDEF    _LVODuplicateBuf
  142.     XDEF    _LVOBufInfo
  143.     XDEF    _LVOSeekBuf
  144.     XDEF    _LVOStore
  145.     XDEF    _LVOInsertBuf
  146.     XDEF    _LVOInsertFile
  147.     XDEF    _LVOReplace
  148.     XDEF    _LVOGet
  149.     XDEF    _LVOClear
  150.     XDEF    _LVOFindData
  151.     XDEF    _LVOFindNext
  152.     XDEF    _LVOFindPrev
  153.     XDEF    _LVOFreeFinds
  154.     XDEF    _LVOSetBookmark
  155.     XDEF    _LVOGotoBookmark
  156.     XDEF    _LVOFindString
  157.     XDEF    _LVOGetLength
  158.     XDEF    _LVOLastError
  159.     XDEF    _LVOLongToString
  160.     XDEF    _LVOStringToLong
  161.     XDEF    _LVOPackByteRun1
  162.     XDEF    _LVOUnpackByteRun1
  163.     XDEF    _LVOPrintIoError
  164.     XDEF    _LVOFlipCase
  165.     XDEF    _LVOCmpMem
  166.     XDEF    _LVOCopyMemI
  167.     XDEF    _LVOFillMem
  168.     XDEF    _LVOGetMem
  169.     XDEF    _LVOUnGetMem
  170.     XDEF    _LVOOutlineOff
  171.     XDEF    _LVOOutlineOn
  172.     XDEF    _LVOSetOPen
  173.     XDEF    _LVOSpecText
  174.     XDEF    _LVOSpecTextPrefs
  175.     XDEF    _LVOShowMsg
  176.     XDEF    _LVOv2_OpenBuf
  177.     XDEF    _LVOv2_FileToBuf
  178.     XDEF    _LVOv2_DuplicateBuf
  179. ;----------------------------------------------------------------------------
  180.     ENDC
  181.  
  182. ;*** lvo / Lib-Call-Macro ***
  183. ;============================================================================
  184. ; Dieses Macro dient zum Aufruf einer Funktion aus der dazugehörigen Library.
  185. ;  Dabei ist dieses Macro gegenüber den CALL-Macros des NDK jedoch so intelli-
  186. ; gent, daß es erkennt, ob mit ihm auch wirklich eine Funktion der zugehörigen
  187. ; Library aufgerufen wird. Damit wird vermieden, daß versehendlich z.B. eine
  188. ; Funktion der exec.library mit dem Macro (und damit natürlich auch dem Zeiger)
  189. ; der graphics.library aufgerufen werden kann, was höchstwahrscheinlich sofort
  190. ; einen Systemabsturz nach sich ziehen würde.
  191. ;  Außerdem haben Optimal-Programmierer auch die Möglichkeit Quick-Aufrufe zu
  192. ; verwenden, um jedes überflüssige Byte einzusparen. Für die Programmierung re-
  193. ; entranter Programme ist ebenfalls eine Syntax definiert, bei der die voll-
  194. ; ständige effektive Addresse des Basis-Zeigers als Parameter übergeben werden
  195. ; muß, da dort ja keine flüchtigen absoluten Adressen verwendet werden dürfen.
  196. ;----------------------------------------------------------------------------
  197. ; Definiert:    ... _lib.i  (Copyright © 1998-2001 RhoSigma, Roland Heyder)
  198. ;
  199. ; Schablone:    Func/A, Opts/F/S
  200. ;
  201. ; Parameter:    Func --> Name der aufzurufenden Funktion ohne »_LVO_LIBNAME_«
  202. ;
  203. ;    Opts --> - das Schlüsselwort »OK« für einen QuickJump-Aufruf
  204. ;               (s. Bemerkung)
  205. ;
  206. ;             - Opts weglassen, um Basis-Symbol »_LibnameBase« ins
  207. ;               Register A6 zu laden
  208. ;
  209. ;             - die effektive Adresse, welche die Basis der Library
  210. ;               enthält (z.B. »globals_Libname(a5)«)
  211. ;
  212. ; Bemerkung:    Wird das Schlüsselwort »OK« angegeben, dann wird davon ausge-
  213. ;    gangen, daß die richtige Basisadresse der Library bereits im
  214. ;    Register A6 steht, und es wird sofort in die Funktion gesprungen.
  215. ;============================================================================
  216.  
  217. DOEXTRA    MACRO    (Func/A, Opts/F/S)
  218.     ;--------------------------------
  219.  
  220.     IFND    _LVO_EXTRA_\1
  221.      FAIL    ** Function undefined or wrong Library **
  222.     ENDC
  223.  
  224.     ;OK for opts means base ready, no baseloading needed
  225.  
  226.     IFC    '\2','OK'
  227.      jsr    _LVO_EXTRA_\1(a6)
  228.      MEXIT
  229.     ENDC
  230.  
  231.     ;nothing means, load static base (for non-pure code only)
  232.  
  233.     IFC    '\2',''
  234.      movea.l    _ExtraBase,a6
  235.      jsr    _LVO_EXTRA_\1(a6)
  236.      MEXIT
  237.     ENDC
  238.  
  239.     ;else opts should be the entire baselocation (for pure code)
  240.  
  241.     movea.l    \2,a6
  242.     jsr    _LVO_EXTRA_\1(a6)
  243.  
  244.     ;--------------------------------
  245.     ENDM    ;DOEXTRA
  246.  
  247.     ENDC    ;extra_lib.i
  248.